# 公司：安徽银杰
# 作者：李伟
"""
调用图鉴的接口操作处理后端的登录的验证码分为以下3个步骤：
1）拿到要处理的验证码图片： 调用获取图片验证码结果
2）调用处理验证码的接口-图鉴接口，获取验证码的内容。--提取图片里面文字
-图鉴的响应消息--json数据： {"success":true,"code":"0","message":"success",
"data":{"result":"camn","id":"a9_BzKteRqyipGDD1K6OBQ"}}
- 提取验证码文本：jsonpath提取
3）登录接口，验证码传输值。

获取图片验证码接口：
请求方法：GET
请求地址：http://shop.lemonban.com:8108/captcha.jpg?uuid=d831838b-1aa4-4927-8236-476f93cba546
响应消息： 图片
uuid：

登录接口： http://shop.lemonban.com:8108/adminLogin
方法： post
参数:{"t":1709128469164,"principal":"student","credentials":"lemon!@666","sessionUUID":"d831838b-1aa4-4927-8236-476f93cba546","imageCode":"eq6b"}

"""
# 1）拿到要处理的验证码图片： 调用获取图片验证码结果
import requests
import uuid
import base64
from jsonpath import jsonpath

# 生成uuid
uuid_str = str(uuid.uuid4())
# 调用获取图片验证码的接口 得到图片验证码
url = "http://shop.lemonban.com:8108/captcha.jpg"
param = {"uuid":uuid_str}
res = requests.request("get",url,params=param)
# print(res.text)  # 返回结果是一个图片 不是文本 --text只能看文本
print(res.content)  # 如果是图片的话 用content 查看 二进制的数据

# 2）调用处理验证码的接口-图鉴接口，获取验证码的内容。--提取图片里面文字
# 因为图鉴的图片参数需要进行base64编码  进行编码,将编码后的二进制数据转化回字符串格式，用于后续的接口参数传递
b64_str = base64.b64encode(res.content).decode("UTF8")
# 调用图鉴接口
url = "http://api.ttshitu.com/predict"
param = {"username": "tricy",
        "password": "lemon123456",
        "typeid": "3",
        "image":b64_str}
resp = requests.request("post",url,json=param)
print(resp.text)
# 提取图片验证的识别结果--jsonpath提取
code_str = jsonpath(resp.json(),"$..result")[0]
print(code_str)

#3）登录接口，验证码传输值。
url = "http://shop.lemonban.com:8108/adminLogin"
data = {"principal":"student",
        "credentials":"lemon!@666",
        "imageCode":code_str,
        "sessionUUID":uuid_str} # uuid传参数
header = {"locale":"zh_CN"}
resp = requests.request("post",url,headers=header,json=data)
print(resp.json())
